Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.09.2014, 14:55
Профессор
Отправить личное сообщение для sotik Посмотреть профиль Найти все сообщения от sotik
 
Регистрация: 14.09.2012
Сообщений: 158

Разобрать ответ
Помогите, пожалуйста, справиться с задачкой.
На ajax отправляю запрос к php.
Оттуда делаю так:
echo json_encode($from);
В js делаю так:
var start = document.getElementById('start');
var obj = xmlhttp.responseText;
var data = eval("(" + obj + ")");
 start.innerHTML = data;

Получаю следующее:
{"btc_usd":{"high":485.46201,"low":464.953 ... }}
Мне надо получить данные, то есть "распарсить", я пробую так:
var out = data.high;
Ничего не получается, скажите как правильно? Желательно на чистом js/
Ответить с цитированием
  #2 (permalink)  
Старый 02.09.2014, 15:36
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,140

var out = data.btc_usd.high;
Ответить с цитированием
  #3 (permalink)  
Старый 02.09.2014, 15:58
Профессор
Отправить личное сообщение для sotik Посмотреть профиль Найти все сообщения от sotik
 
Регистрация: 14.09.2012
Сообщений: 158

Сообщение от MallSerg Посмотреть сообщение
var out = data.btc_usd.high;
Я тоже так думал, но в результате ничего не выводит, даже ошибки.
Ответить с цитированием
  #4 (permalink)  
Старый 02.09.2014, 16:44
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,140

var obj = "{\"btc_usd\":{\"high\":485.46201,\"low\":464.953}}";
var data = eval("(" + obj + ")");
var out = data.btc_usd.high;
alert (out);

все работает на тестовом примере проблема не воспроизводится
Ответить с цитированием
  #5 (permalink)  
Старый 02.09.2014, 19:29
Профессор
Отправить личное сообщение для sotik Посмотреть профиль Найти все сообщения от sotik
 
Регистрация: 14.09.2012
Сообщений: 158

Очень вам благодарен.
Есть здесь одно но.
ajax-ом я получаю:
var obj = xmlhttp.responseText;
Принудительно присваиваем переменной:
var obj = "{\"btc_usd\":{\"high\":485.46201,\"low\":464.953} }";
И вот код действительно работает с тем что присваиваем принудительно, а то что изначально - не работает, странно почему так...
Ответить с цитированием
  #6 (permalink)  
Старый 02.09.2014, 19:44
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,140

и какой же отсюда вывод?
Ответить с цитированием
  #7 (permalink)  
Старый 02.09.2014, 20:06
Профессор
Отправить личное сообщение для sotik Посмотреть профиль Найти все сообщения от sotik
 
Регистрация: 14.09.2012
Сообщений: 158

Сообщение от MallSerg Посмотреть сообщение
и какой же отсюда вывод?
Да я не знаю какой вывод.
Может в первом случае - это объект, а во втором строка?!
И со строкой все получается, тогда как этот объект в строку перевести что ль??
У меня статус кандидат js. Да какой я там кандидат, елы-палы..
Ответить с цитированием
  #8 (permalink)  
Старый 02.09.2014, 20:34
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,140

ты в обоих случаях евалиш строку
но возможно эти строки чем то отличаются?
Ответить с цитированием
  #9 (permalink)  
Старый 03.09.2014, 06:07
Профессор
Отправить личное сообщение для sotik Посмотреть профиль Найти все сообщения от sotik
 
Регистрация: 14.09.2012
Сообщений: 158

Я нашел ошибку.
В php исправил:
echo json_encode($from);
на:
echo $from;
Кстати все файлы у меня в кодировке windows-1251
Правда я слыхал что json работает только с utf-8.
Незнаю как мне в этом разобраться, но код теперь работает как надо.
Спасибо вам.
Ответить с цитированием
  #10 (permalink)  
Старый 07.09.2014, 08:58
Профессор
Отправить личное сообщение для sotik Посмотреть профиль Найти все сообщения от sotik
 
Регистрация: 14.09.2012
Сообщений: 158

Как в ответе от сервера получить данные путем подстановки переменной?
Например вместо:
high = data.btc_usd.high;
Нужно:
pa = "btc_usd";
high = data.pa.high;
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смишных картинок тред megaupload Оффтопик 3447 03.07.2023 09:47
Верный ответ Vasy Общие вопросы Javascript 3 24.03.2013 23:05
ответ сервера не сохраняется в глобальную переменную cyberpunk AJAX и COMET 2 06.03.2012 11:57
Ответ сервера в плугине ajaxForm отдается неправильно. IgorOk jQuery 11 13.12.2009 04:35
Ajax - JSON - не распознает пришедший ответ Майский Кот jQuery 1 14.05.2009 00:40